package com.eshop.modules.product.domain;

import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.bean.copier.CopyOptions;
import com.eshop.modules.user.domain.ShopUser;
import java.util.Date;
import javax.validation.constraints.NotBlank;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.eshop.domain.BaseDomain;

@TableName("store_product_reply")
public class StoreProductReply extends BaseDomain
{
    @TableId
    private Long id;
    private Long uid;
    private Long oid;
    @TableField("`unique`")
    private String unique;
    private Long productId;
    private String replyType;
    private Integer productScore;
    private Integer serviceScore;
    private String comment;
    private String pics;
    @NotBlank(message = "回复内容不能为空")
    private String merchantReplyContent;
    private Date merchantReplyTime;
    private Integer isReply;
    @TableField(exist = false)
    private StoreProduct storeProduct;
    @TableField(exist = false)
    private ShopUser user;
    
    public void copy(final StoreProductReply source) {
        BeanUtil.copyProperties((Object)source, (Object)this, CopyOptions.create().setIgnoreNullValue(true));
    }
    
    public static StoreProductReplyBuilder builder() {
        return new StoreProductReplyBuilder();
    }
    
    public Long getId() {
        return this.id;
    }
    
    public Long getUid() {
        return this.uid;
    }
    
    public Long getOid() {
        return this.oid;
    }
    
    public String getUnique() {
        return this.unique;
    }
    
    public Long getProductId() {
        return this.productId;
    }
    
    public String getReplyType() {
        return this.replyType;
    }
    
    public Integer getProductScore() {
        return this.productScore;
    }
    
    public Integer getServiceScore() {
        return this.serviceScore;
    }
    
    public String getComment() {
        return this.comment;
    }
    
    public String getPics() {
        return this.pics;
    }
    
    public String getMerchantReplyContent() {
        return this.merchantReplyContent;
    }
    
    public Date getMerchantReplyTime() {
        return this.merchantReplyTime;
    }
    
    public Integer getIsReply() {
        return this.isReply;
    }
    
    public StoreProduct getStoreProduct() {
        return this.storeProduct;
    }
    
    public ShopUser getUser() {
        return this.user;
    }
    
    public void setId(final Long id) {
        this.id = id;
    }
    
    public void setUid(final Long uid) {
        this.uid = uid;
    }
    
    public void setOid(final Long oid) {
        this.oid = oid;
    }
    
    public void setUnique(final String unique) {
        this.unique = unique;
    }
    
    public void setProductId(final Long productId) {
        this.productId = productId;
    }
    
    public void setReplyType(final String replyType) {
        this.replyType = replyType;
    }
    
    public void setProductScore(final Integer productScore) {
        this.productScore = productScore;
    }
    
    public void setServiceScore(final Integer serviceScore) {
        this.serviceScore = serviceScore;
    }
    
    public void setComment(final String comment) {
        this.comment = comment;
    }
    
    public void setPics(final String pics) {
        this.pics = pics;
    }
    
    public void setMerchantReplyContent(final String merchantReplyContent) {
        this.merchantReplyContent = merchantReplyContent;
    }
    
    public void setMerchantReplyTime(final Date merchantReplyTime) {
        this.merchantReplyTime = merchantReplyTime;
    }
    
    public void setIsReply(final Integer isReply) {
        this.isReply = isReply;
    }
    
    public void setStoreProduct(final StoreProduct storeProduct) {
        this.storeProduct = storeProduct;
    }
    
    public void setUser(final ShopUser user) {
        this.user = user;
    }
    
    public String toString() {
        return "StoreProductReply(id=" + this.getId() + ", uid=" + this.getUid() + ", oid=" + this.getOid() + ", unique=" + this.getUnique() + ", productId=" + this.getProductId() + ", replyType=" + this.getReplyType() + ", productScore=" + this.getProductScore() + ", serviceScore=" + this.getServiceScore() + ", comment=" + this.getComment() + ", pics=" + this.getPics() + ", merchantReplyContent=" + this.getMerchantReplyContent() + ", merchantReplyTime=" + this.getMerchantReplyTime() + ", isReply=" + this.getIsReply() + ", storeProduct=" + this.getStoreProduct() + ", user=" + this.getUser() + ")";
    }
    
    public boolean equals(final Object o) {
        if (o == this) {
            return true;
        }
        if (!(o instanceof StoreProductReply)) {
            return false;
        }
        final StoreProductReply other = (StoreProductReply)o;
        if (!other.canEqual(this)) {
            return false;
        }
        if (!super.equals(o)) {
            return false;
        }
        final Object this$id = this.getId();
        final Object other$id = other.getId();
        Label_0075: {
            if (this$id == null) {
                if (other$id == null) {
                    break Label_0075;
                }
            }
            else if (this$id.equals(other$id)) {
                break Label_0075;
            }
            return false;
        }
        final Object this$uid = this.getUid();
        final Object other$uid = other.getUid();
        Label_0112: {
            if (this$uid == null) {
                if (other$uid == null) {
                    break Label_0112;
                }
            }
            else if (this$uid.equals(other$uid)) {
                break Label_0112;
            }
            return false;
        }
        final Object this$oid = this.getOid();
        final Object other$oid = other.getOid();
        Label_0149: {
            if (this$oid == null) {
                if (other$oid == null) {
                    break Label_0149;
                }
            }
            else if (this$oid.equals(other$oid)) {
                break Label_0149;
            }
            return false;
        }
        final Object this$productId = this.getProductId();
        final Object other$productId = other.getProductId();
        Label_0186: {
            if (this$productId == null) {
                if (other$productId == null) {
                    break Label_0186;
                }
            }
            else if (this$productId.equals(other$productId)) {
                break Label_0186;
            }
            return false;
        }
        final Object this$productScore = this.getProductScore();
        final Object other$productScore = other.getProductScore();
        Label_0223: {
            if (this$productScore == null) {
                if (other$productScore == null) {
                    break Label_0223;
                }
            }
            else if (this$productScore.equals(other$productScore)) {
                break Label_0223;
            }
            return false;
        }
        final Object this$serviceScore = this.getServiceScore();
        final Object other$serviceScore = other.getServiceScore();
        Label_0260: {
            if (this$serviceScore == null) {
                if (other$serviceScore == null) {
                    break Label_0260;
                }
            }
            else if (this$serviceScore.equals(other$serviceScore)) {
                break Label_0260;
            }
            return false;
        }
        final Object this$isReply = this.getIsReply();
        final Object other$isReply = other.getIsReply();
        Label_0297: {
            if (this$isReply == null) {
                if (other$isReply == null) {
                    break Label_0297;
                }
            }
            else if (this$isReply.equals(other$isReply)) {
                break Label_0297;
            }
            return false;
        }
        final Object this$unique = this.getUnique();
        final Object other$unique = other.getUnique();
        Label_0334: {
            if (this$unique == null) {
                if (other$unique == null) {
                    break Label_0334;
                }
            }
            else if (this$unique.equals(other$unique)) {
                break Label_0334;
            }
            return false;
        }
        final Object this$replyType = this.getReplyType();
        final Object other$replyType = other.getReplyType();
        Label_0371: {
            if (this$replyType == null) {
                if (other$replyType == null) {
                    break Label_0371;
                }
            }
            else if (this$replyType.equals(other$replyType)) {
                break Label_0371;
            }
            return false;
        }
        final Object this$comment = this.getComment();
        final Object other$comment = other.getComment();
        Label_0408: {
            if (this$comment == null) {
                if (other$comment == null) {
                    break Label_0408;
                }
            }
            else if (this$comment.equals(other$comment)) {
                break Label_0408;
            }
            return false;
        }
        final Object this$pics = this.getPics();
        final Object other$pics = other.getPics();
        Label_0445: {
            if (this$pics == null) {
                if (other$pics == null) {
                    break Label_0445;
                }
            }
            else if (this$pics.equals(other$pics)) {
                break Label_0445;
            }
            return false;
        }
        final Object this$merchantReplyContent = this.getMerchantReplyContent();
        final Object other$merchantReplyContent = other.getMerchantReplyContent();
        Label_0482: {
            if (this$merchantReplyContent == null) {
                if (other$merchantReplyContent == null) {
                    break Label_0482;
                }
            }
            else if (this$merchantReplyContent.equals(other$merchantReplyContent)) {
                break Label_0482;
            }
            return false;
        }
        final Object this$merchantReplyTime = this.getMerchantReplyTime();
        final Object other$merchantReplyTime = other.getMerchantReplyTime();
        Label_0519: {
            if (this$merchantReplyTime == null) {
                if (other$merchantReplyTime == null) {
                    break Label_0519;
                }
            }
            else if (this$merchantReplyTime.equals(other$merchantReplyTime)) {
                break Label_0519;
            }
            return false;
        }
        final Object this$storeProduct = this.getStoreProduct();
        final Object other$storeProduct = other.getStoreProduct();
        Label_0556: {
            if (this$storeProduct == null) {
                if (other$storeProduct == null) {
                    break Label_0556;
                }
            }
            else if (this$storeProduct.equals(other$storeProduct)) {
                break Label_0556;
            }
            return false;
        }
        final Object this$user = this.getUser();
        final Object other$user = other.getUser();
        if (this$user == null) {
            if (other$user == null) {
                return true;
            }
        }
        else if (this$user.equals(other$user)) {
            return true;
        }
        return false;
    }
    
    protected boolean canEqual(final Object other) {
        return other instanceof StoreProductReply;
    }
    
    public int hashCode() {
        final int PRIME = 59;
        int result = super.hashCode();
        final Object $id = this.getId();
        result = result * 59 + (($id == null) ? 43 : $id.hashCode());
        final Object $uid = this.getUid();
        result = result * 59 + (($uid == null) ? 43 : $uid.hashCode());
        final Object $oid = this.getOid();
        result = result * 59 + (($oid == null) ? 43 : $oid.hashCode());
        final Object $productId = this.getProductId();
        result = result * 59 + (($productId == null) ? 43 : $productId.hashCode());
        final Object $productScore = this.getProductScore();
        result = result * 59 + (($productScore == null) ? 43 : $productScore.hashCode());
        final Object $serviceScore = this.getServiceScore();
        result = result * 59 + (($serviceScore == null) ? 43 : $serviceScore.hashCode());
        final Object $isReply = this.getIsReply();
        result = result * 59 + (($isReply == null) ? 43 : $isReply.hashCode());
        final Object $unique = this.getUnique();
        result = result * 59 + (($unique == null) ? 43 : $unique.hashCode());
        final Object $replyType = this.getReplyType();
        result = result * 59 + (($replyType == null) ? 43 : $replyType.hashCode());
        final Object $comment = this.getComment();
        result = result * 59 + (($comment == null) ? 43 : $comment.hashCode());
        final Object $pics = this.getPics();
        result = result * 59 + (($pics == null) ? 43 : $pics.hashCode());
        final Object $merchantReplyContent = this.getMerchantReplyContent();
        result = result * 59 + (($merchantReplyContent == null) ? 43 : $merchantReplyContent.hashCode());
        final Object $merchantReplyTime = this.getMerchantReplyTime();
        result = result * 59 + (($merchantReplyTime == null) ? 43 : $merchantReplyTime.hashCode());
        final Object $storeProduct = this.getStoreProduct();
        result = result * 59 + (($storeProduct == null) ? 43 : $storeProduct.hashCode());
        final Object $user = this.getUser();
        result = result * 59 + (($user == null) ? 43 : $user.hashCode());
        return result;
    }
    
    public StoreProductReply(final Long id, final Long uid, final Long oid, final String unique, final Long productId, final String replyType, final Integer productScore, final Integer serviceScore, final String comment, final String pics, final String merchantReplyContent, final Date merchantReplyTime, final Integer isReply, final StoreProduct storeProduct, final ShopUser user) {
        this.id = id;
        this.uid = uid;
        this.oid = oid;
        this.unique = unique;
        this.productId = productId;
        this.replyType = replyType;
        this.productScore = productScore;
        this.serviceScore = serviceScore;
        this.comment = comment;
        this.pics = pics;
        this.merchantReplyContent = merchantReplyContent;
        this.merchantReplyTime = merchantReplyTime;
        this.isReply = isReply;
        this.storeProduct = storeProduct;
        this.user = user;
    }
    
    public StoreProductReply() {
    }
    
    public static class StoreProductReplyBuilder
    {
        private Long id;
        private Long uid;
        private Long oid;
        private String unique;
        private Long productId;
        private String replyType;
        private Integer productScore;
        private Integer serviceScore;
        private String comment;
        private String pics;
        private String merchantReplyContent;
        private Date merchantReplyTime;
        private Integer isReply;
        private StoreProduct storeProduct;
        private ShopUser user;
        
        StoreProductReplyBuilder() {
        }
        
        public StoreProductReplyBuilder id(final Long id) {
            this.id = id;
            return this;
        }
        
        public StoreProductReplyBuilder uid(final Long uid) {
            this.uid = uid;
            return this;
        }
        
        public StoreProductReplyBuilder oid(final Long oid) {
            this.oid = oid;
            return this;
        }
        
        public StoreProductReplyBuilder unique(final String unique) {
            this.unique = unique;
            return this;
        }
        
        public StoreProductReplyBuilder productId(final Long productId) {
            this.productId = productId;
            return this;
        }
        
        public StoreProductReplyBuilder replyType(final String replyType) {
            this.replyType = replyType;
            return this;
        }
        
        public StoreProductReplyBuilder productScore(final Integer productScore) {
            this.productScore = productScore;
            return this;
        }
        
        public StoreProductReplyBuilder serviceScore(final Integer serviceScore) {
            this.serviceScore = serviceScore;
            return this;
        }
        
        public StoreProductReplyBuilder comment(final String comment) {
            this.comment = comment;
            return this;
        }
        
        public StoreProductReplyBuilder pics(final String pics) {
            this.pics = pics;
            return this;
        }
        
        public StoreProductReplyBuilder merchantReplyContent(final String merchantReplyContent) {
            this.merchantReplyContent = merchantReplyContent;
            return this;
        }
        
        public StoreProductReplyBuilder merchantReplyTime(final Date merchantReplyTime) {
            this.merchantReplyTime = merchantReplyTime;
            return this;
        }
        
        public StoreProductReplyBuilder isReply(final Integer isReply) {
            this.isReply = isReply;
            return this;
        }
        
        public StoreProductReplyBuilder storeProduct(final StoreProduct storeProduct) {
            this.storeProduct = storeProduct;
            return this;
        }
        
        public StoreProductReplyBuilder user(final ShopUser user) {
            this.user = user;
            return this;
        }
        
        public StoreProductReply build() {
            return new StoreProductReply(this.id, this.uid, this.oid, this.unique, this.productId, this.replyType, this.productScore, this.serviceScore, this.comment, this.pics, this.merchantReplyContent, this.merchantReplyTime, this.isReply, this.storeProduct, this.user);
        }
        
        @Override
        public String toString() {
            return "StoreProductReply.StoreProductReplyBuilder(id=" + this.id + ", uid=" + this.uid + ", oid=" + this.oid + ", unique=" + this.unique + ", productId=" + this.productId + ", replyType=" + this.replyType + ", productScore=" + this.productScore + ", serviceScore=" + this.serviceScore + ", comment=" + this.comment + ", pics=" + this.pics + ", merchantReplyContent=" + this.merchantReplyContent + ", merchantReplyTime=" + this.merchantReplyTime + ", isReply=" + this.isReply + ", storeProduct=" + this.storeProduct + ", user=" + this.user + ")";
        }
    }
}
